/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.evangelion.core.controller;

import com.evangelion.core.bean.Cliente;
import com.evangelion.core.bean.Factura;
import com.evangelion.core.bean.Grupo;
import com.evangelion.core.bean.Proveedor;
import com.evangelion.core.bean.Seccione;
import com.evangelion.core.bean.Usuario;
import com.evangelion.core.bean.Vehiculo;
import com.evangelion.core.service.FacturaService;
import com.evangelion.core.serviceImpl.FacturaServiceImpl;
import com.evangelion.core.utils.GrupoConverter;
import com.evangelion.core.utils.MensajesFace;
import com.evangelion.core.utils.ProveedorConverter;
import com.evangelion.core.utils.SeccionConverter;
import com.evangelion.core.utils.VehiculoConverter;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Kellycasma
 */
@ManagedBean
@ViewScoped
public class FacturaController extends MensajesFace implements Serializable {

    private Factura factura;
    FacturaService fsi = new FacturaServiceImpl();
    String valorBusqueda;
    Date fechaI;
    Date fechaF;
    List<Factura> listaFactura;
    List<Vehiculo> listaVehiculo;
    List<Grupo> listaGrupo;
    List<Seccione> listaSeccion;
    List<Proveedor> listaProveedor;
    Usuario usu;
    Seccione seccio;

    @PostConstruct
    public void init() {
        factura = new Factura();
        factura.setCliente(new Cliente());
        factura.setSeccion(new Seccione());
        listaFactura = new ArrayList<Factura>();

        System.out.println("Lista............ " + listaFactura.size());
        listaVehiculo = VehiculoConverter.linkTypesDB;
        listaGrupo = GrupoConverter.linkTypesDB;
        listaSeccion = SeccionConverter.linkTypesDB;
        listaProveedor = ProveedorConverter.linkTypesDB;
        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
        HttpSession httpSession = request.getSession(false);
        if (httpSession != null) {
            usu = (Usuario) httpSession.getAttribute("UserSession");
            seccio = (Seccione) httpSession.getAttribute("seccion");
        }
        listaFactura = fsi.searchByMatricula(seccio, "", new Date(), new Date());
    }

    public void save() {
        factura.setCliente(usu.getCliente());
        //factura.setSeccion(seccio);
        fsi.save(factura);
        limpiarForm();
        msgCambiosGuardados();
        init();
    }

    public void limpiarForm() {
        factura = new Factura();
    }

    public void search() {
        listaFactura = fsi.searchByMatricula(seccio, valorBusqueda, fechaI, fechaF);
    }

    public Factura getFactura() {
        return factura;
    }

    public void setFactura(Factura factura) {
        this.factura = factura;
    }

    public List<Vehiculo> getListaVehiculo() {
        return listaVehiculo;
    }

    public void setListaVehiculo(List<Vehiculo> listaVehiculo) {
        this.listaVehiculo = listaVehiculo;
    }

    public List<Grupo> getListaGrupo() {
        return listaGrupo;
    }

    public void setListaGrupo(List<Grupo> listaGrupo) {
        this.listaGrupo = listaGrupo;
    }

    public List<Proveedor> getListaProveedor() {
        return listaProveedor;
    }

    public void setListaProveedor(List<Proveedor> listaProveedor) {
        this.listaProveedor = listaProveedor;
    }

    public String getValorBusqueda() {
        return valorBusqueda;
    }

    public void setValorBusqueda(String valorBusqueda) {
        this.valorBusqueda = valorBusqueda;
    }

    public Date getFechaI() {
        return fechaI;
    }

    public void setFechaI(Date fechaI) {
        this.fechaI = fechaI;
    }

    public Date getFechaF() {
        return fechaF;
    }

    public void setFechaF(Date fechaF) {
        this.fechaF = fechaF;
    }

    public List<Factura> getListaFactura() {
        return listaFactura;
    }

    public void setListaFactura(List<Factura> listaFactura) {
        this.listaFactura = listaFactura;
    }

    public List<Seccione> getListaSeccion() {
        return listaSeccion;
    }

    public void setListaSeccion(List<Seccione> listaSeccion) {
        this.listaSeccion = listaSeccion;
    }
}
